草庐IT

wpf - 微软 Surface 和 WPF

全部标签

c# - 如何更改 Wpf AdornerLayer 子项的 z 顺序?

我有一个图像编辑应用程序,我有自定义装饰器,这些装饰器被添加到AdornerLayer。当用户点击一个装饰器时,我想将它带到顶部-这意味着如果它被拖到另一个装饰器上,我希望第一次点击被最上面的装饰器捕获。我不知道如何更改AdornerLayer的子元素的z顺序。它似乎不允许我对它们进行排序。即使我删除并重新添加装饰器,它也不会达到最顶层。 最佳答案 我遇到了类似的问题,但只需要对我的装饰器进行特定排序。我最终使用反射来设置订单:varsetZOrderMethodInfo=adornerLayer.GetType().GetMeth

c# - C# WPF 中的页面、框架、导航窗口

想知道c#wpf中page,frame,navigationwindows的区别对于wpfwindows应用程序,它们的最佳选择是什么?在我的应用程序中如何在点击固定部分的按钮后制作固定部分(包含主按钮)和可变部分(显示页面)有没有好的网站提供c#wpf从入门到专业的视频教程?谢谢 最佳答案 Page很像用户控件,只是显示在Frame中,而Frame又是NavigationWindow的一部分。NavigationWindow是一种特殊的窗口,它允许进行页面导航并可以显示用于导航页面的相应控件。如果您想要类似于向导的功能,或者如果用

c# - 如何阻止 WPF KeyDown 事件从某些包含的控件(例如 TextBox)中冒出?

我的程序非常大,并且使用WPF,我想要一个使用“R”且没有修饰符的全局快捷键。有许多控件,如TextBox、ListBox、ComboBox等,它们都在控件本身内部使用字母,这很好-这对我来说是正确的。但是-我想阻止KeyDown事件冒泡到主窗口,例如,只要用户在文本框中键入字母“R”,它就会触发快捷方式。理想情况下,我希望能够做到这一点而不必指定(并执行if-then逻辑)每个可能接收正常字母按键的控件实例/类型(不仅仅是TextBox控件,尽管它们是最糟糕的违规者). 最佳答案 只需检查Window上的KeyDown事件处理程序

c# - WPF- 验证错误事件不会触发

我想我已经阅读了所有相关文章,但没有一篇有帮助..我试图通过错误状态启用/禁用datagrid的保存按钮-但没有成功。这是我的代码:承包商:AddHandler(Validation.ErrorEvent,newRoutedEventHandler(OnErrorEvent));XAML:代码隐藏:privateinterrorCount;privatevoidOnErrorEvent(objectsender,RoutedEventArgse){varvalidationEventArgs=easValidationErrorEventArgs;if(validationEventA

c# - 在多个窗口中使用 WPF WebBrowser 控件时发生内存泄漏

我正在开发一个使用WPFWebBrowser控件(System.Windows.Controls.WebBrowser)的项目。该程序的Web浏览器元素是用户可以参与的众多事件之一,并在单独的窗口中打开。用户离开浏览器后,窗口关闭,每次用户返回浏览器时都会创建一个新窗口。我们注意到在持续使用浏览器时,我们的程序出现了显着的内存泄漏/性能下降(使用量从最初的~200mb上升到~700mb)。在我们自己的代码中未能找到任何资源泄漏点之后,我决定确定问题是出在我们自己的WebBrowser包装器控件上,还是出在WPF控件上。我创建了一个新的简单项目,其中仅包含一个MainWindow和一个W

c# - 可扩展的 WPF 应用程序 - MEF、MAF 或简单加载?

(我知道其他MEF/MAF问题,但这是一个更具体的问题)我想创建一个基本上只是一个简单的加载项主机、GUI和设置的WPF应用程序。所有实际工作将由一个或多个插件完成。它们之间不需要通信,主应用程序会向它们发送用户输入/命令,它们会返回一些结果(例如,要呈现的WPFUI元素)。现在,由于应用程序的核心将基于插件,我需要选择一种好的方式来管理它们。我希望能够在运行时加载/卸载/重新加载它们(例如,当找到并下载更新时)。为了稳定性和安全性,它们可能应该在自己的应用程序域和/或进程中运行。通过一些研究和实验,我得出了三个选择:System.Addin(MAF):看来这可以满足我的所有需求。有一

c# - 我如何优先考虑 WPF 文本框自动换行?

在很多情况下,我的面板或网格会自动调整大小,但如果它们包含带有TextWrapping="Wrap"的TextBox,则TextBox在真正需要之前很久就继续向右扩展面板/网格,如下图:我想要做的是让TextBox在尝试向右扩展之前通过换行文本来填充其区域。该问题的一个简化示例是:我在StackOverflowhere上发现了类似的问题,但发布的最佳解决方案不允许TextBox展开。该解决方案类似于:除了用修改后的行为扩展TextBox之外还有什么想法吗? 最佳答案 有一个简单的技巧可以使其正常工作。使用Canvas,然后将文本框的

c# - WPF DataGrid 的 EnableRowVirtualization 和 VirtualizingStackPanel.IsVirtualizing 属性之间的区别

几乎没有关于设置影响的信息;VirtualizingStackPanel.IsVirtualizing="True"和EnableRowVirtualization="True"EnableColumnVirtualization="True".谁能解释一下区别是什么?此外,作为额外的奖励,任何人都可以澄清EnableRowVirtualization和EnableColumnVirtualization是否真的在3.5网格上执行任何操作,因为MSDN文档仅将这些属性列回4.0,但它们肯定存在于3.5中?谢谢。 最佳答案 IsVir

c# - 等效于 WPF .NET 5、.NET 6 或 .Net Core 中的 UserSettings/ApplicationSettings

对于.NET5、.NET6或.NetCore>=3.0的WPF应用程序,持久化用户设置的首选方法是什么?.NET用户设置到哪里去了?创建WPF.NetCore3.0项目(VS2019V16.3.1)现在我看到没有Properties.Settings部分了。[2022年更新:对于.NET6,它仍然是一样的]网上搜索后,开始深入Microsoft.Extensions.Configuration。除了臃肿的代码访问设置,现在更糟->没有保存?UserConfigurationSettingsin.NETCoreFortunatelyorunfortunatelytheMicrosoft.

c# - 如果移动到其他屏幕,WPF MediaElement 将停止播放

我在使用MediaElement时遇到了一个非常奇怪的问题,它似乎与多屏幕环境有关:偶尔(我无法每次都重现该问题)当我将MediaElement所在的窗口从一个屏幕拖到另一个屏幕时停止播放.这种奇怪的行为也会发生在非常基本的代码中,例如:publicMainWindow(){InitializeComponent();}protectedoverridevoidOnSourceInitialized(EventArgse){media.Play();base.OnSourceInitialized(e);}和有没有人遇到(并最终解决)任何类似的问题? 最佳答